USFS - NASA JOINT APPLICATIONS WORKSHOP part of Applied Earth Observations Innovation Partneship.¶Note: follow the steps provided in Prerequisites/Setup Instructions section in README.md
import os
import h5py
import pandas
import geopandas
from shapely.geometry import Point
import geoviews
from geoviews import opts, tile_sources as gvts
import shapely
import warnings
from shapely.errors import ShapelyDeprecationWarning
geoviews.extension('bokeh','matplotlib')
warnings.filterwarnings("ignore", category=ShapelyDeprecationWarning)
inDir = os.getcwd() # Set input directory to the current working directory
os.chdir(inDir)
gedi_L2B = [g for g in os.listdir() if g.startswith('GEDI02_B') and g.endswith('.h5')] # List all GEDI L2B .h5 files in inDir
gedi_L2B
['GEDI02_B_2022120091720_O19145_02_T09106_02_003_01_V002.h5']
GEDI02_B: Product Short Name
2022120091720: Julian Date and Time of Acquisition (YYYYDDDHHMMSS)
O19145: Orbit Number
02: Sub-Orbit Granule Number (1-4)
T09106: Track Number (Reference Ground Track)
02: Positioning and Pointing Determination System (PPDS) type (00 is predict, 01 rapid, 02 and higher is final)
003: PGE Version Number
01: Granule Production Version
V002: Product Version
L2B = h5py.File(gedi_L2B[0], 'r') # Read file using h5py
L2B
<HDF5 file "GEDI02_B_2022120091720_O19145_02_T09106_02_003_01_V002.h5" (mode r)>
list(L2B.keys())
['BEAM0000', 'BEAM0001', 'BEAM0010', 'BEAM0011', 'BEAM0101', 'BEAM0110', 'BEAM1000', 'BEAM1011', 'METADATA']
METADATA group contains the file-level metadata such as the creation date, PGEVersion, and VersionID. Below, print the file-level metadata attributes and their values.¶for g in L2B['METADATA']['DatasetIdentification'].attrs:
print(g, ':', L2B['METADATA']['DatasetIdentification'].attrs[g])
PGEVersion : 003 VersionID : 01 abstract : The GEDI L2B standard data product contains precise latitude, longitude, elevation, height, cover and vertical profile metrics for each laser footprint located on the land surface. characterSet : utf8 creationDate : 2022-08-24T16:16:22.315776Z credit : The software that generates the L2B product was implemented within the GEDI Science Data Processing System at the NASA Goddard Space Flight Center (GSFC) in Greenbelt, Maryland in collaboration with the Department of Geographical Sciences at the University of Maryland (UMD). fileName : GEDI02_B_2022120091720_O19145_02_T09106_02_003_01_V002.h5 language : eng originatorOrganizationName : UMD/GSFC GEDI-SDPS > GEDI Science Data Processing System purpose : The purpose of the L2B dataset is to extract biophysical metrics from each GEDI waveform. These metrics are based on the directional gap probability profile derived from the L1B waveform and include canopy cover, Plant Area Index (PAI), Plant Area Volume Density (PAVD) and Foliage Height Diversity (FHD). shortName : GEDI_L2B spatialRepresentationType : along-track status : onGoing topicCategory : geoscientificInformation uuid : cb5bebb2-6eb6-4d4e-b38f-a017a5b8941e
for beam in list(L2B.keys()):
if beam == 'METADATA':
continue
else:
print(beam, 'is:', L2B[beam].attrs['description'])
BEAM0000 is: Coverage beam BEAM0001 is: Coverage beam BEAM0010 is: Coverage beam BEAM0011 is: Coverage beam BEAM0101 is: Full power beam BEAM0110 is: Full power beam BEAM1000 is: Full power beam BEAM1011 is: Full power beam
# list(L2B['BEAM1011'].keys())
L2B_objs = []
L2B.visit(L2B_objs.append) # Retrieve list of datasets
SDS = [o for o in L2B_objs if isinstance(L2B[o], h5py.Dataset)] # Search for relevant SDS inside data file
SDS
['BEAM0000/algorithmrun_flag', 'BEAM0000/ancillary/dz', 'BEAM0000/ancillary/l2a_alg_count', 'BEAM0000/ancillary/maxheight_cuttoff', 'BEAM0000/ancillary/rg_eg_constraint_center_buffer', 'BEAM0000/ancillary/rg_eg_mpfit_max_func_evals', 'BEAM0000/ancillary/rg_eg_mpfit_maxiters', 'BEAM0000/ancillary/rg_eg_mpfit_tolerance', 'BEAM0000/ancillary/signal_search_buff', 'BEAM0000/ancillary/tx_noise_stddev_multiplier', 'BEAM0000/beam', 'BEAM0000/channel', 'BEAM0000/cover', 'BEAM0000/cover_z', 'BEAM0000/fhd_normal', 'BEAM0000/geolocation/degrade_flag', 'BEAM0000/geolocation/delta_time', 'BEAM0000/geolocation/digital_elevation_model', 'BEAM0000/geolocation/elev_highestreturn', 'BEAM0000/geolocation/elev_lowestmode', 'BEAM0000/geolocation/elevation_bin0', 'BEAM0000/geolocation/elevation_bin0_error', 'BEAM0000/geolocation/elevation_lastbin', 'BEAM0000/geolocation/elevation_lastbin_error', 'BEAM0000/geolocation/height_bin0', 'BEAM0000/geolocation/height_lastbin', 'BEAM0000/geolocation/lat_highestreturn', 'BEAM0000/geolocation/lat_lowestmode', 'BEAM0000/geolocation/latitude_bin0', 'BEAM0000/geolocation/latitude_bin0_error', 'BEAM0000/geolocation/latitude_lastbin', 'BEAM0000/geolocation/latitude_lastbin_error', 'BEAM0000/geolocation/local_beam_azimuth', 'BEAM0000/geolocation/local_beam_elevation', 'BEAM0000/geolocation/lon_highestreturn', 'BEAM0000/geolocation/lon_lowestmode', 'BEAM0000/geolocation/longitude_bin0', 'BEAM0000/geolocation/longitude_bin0_error', 'BEAM0000/geolocation/longitude_lastbin', 'BEAM0000/geolocation/longitude_lastbin_error', 'BEAM0000/geolocation/shot_number', 'BEAM0000/geolocation/solar_azimuth', 'BEAM0000/geolocation/solar_elevation', 'BEAM0000/l2a_quality_flag', 'BEAM0000/l2b_quality_flag', 'BEAM0000/land_cover_data/landsat_treecover', 'BEAM0000/land_cover_data/landsat_water_persistence', 'BEAM0000/land_cover_data/leaf_off_doy', 'BEAM0000/land_cover_data/leaf_off_flag', 'BEAM0000/land_cover_data/leaf_on_cycle', 'BEAM0000/land_cover_data/leaf_on_doy', 'BEAM0000/land_cover_data/modis_nonvegetated', 'BEAM0000/land_cover_data/modis_nonvegetated_sd', 'BEAM0000/land_cover_data/modis_treecover', 'BEAM0000/land_cover_data/modis_treecover_sd', 'BEAM0000/land_cover_data/pft_class', 'BEAM0000/land_cover_data/region_class', 'BEAM0000/land_cover_data/urban_focal_window_size', 'BEAM0000/land_cover_data/urban_proportion', 'BEAM0000/master_frac', 'BEAM0000/master_int', 'BEAM0000/num_detectedmodes', 'BEAM0000/omega', 'BEAM0000/pai', 'BEAM0000/pai_z', 'BEAM0000/pavd_z', 'BEAM0000/pgap_theta', 'BEAM0000/pgap_theta_error', 'BEAM0000/pgap_theta_z', 'BEAM0000/rg', 'BEAM0000/rh100', 'BEAM0000/rhog', 'BEAM0000/rhog_error', 'BEAM0000/rhov', 'BEAM0000/rhov_error', 'BEAM0000/rossg', 'BEAM0000/rv', 'BEAM0000/rx_processing/algorithmrun_flag_a1', 'BEAM0000/rx_processing/algorithmrun_flag_a2', 'BEAM0000/rx_processing/algorithmrun_flag_a3', 'BEAM0000/rx_processing/algorithmrun_flag_a4', 'BEAM0000/rx_processing/algorithmrun_flag_a5', 'BEAM0000/rx_processing/algorithmrun_flag_a6', 'BEAM0000/rx_processing/pgap_theta_a1', 'BEAM0000/rx_processing/pgap_theta_a2', 'BEAM0000/rx_processing/pgap_theta_a3', 'BEAM0000/rx_processing/pgap_theta_a4', 'BEAM0000/rx_processing/pgap_theta_a5', 'BEAM0000/rx_processing/pgap_theta_a6', 'BEAM0000/rx_processing/pgap_theta_error_a1', 'BEAM0000/rx_processing/pgap_theta_error_a2', 'BEAM0000/rx_processing/pgap_theta_error_a3', 'BEAM0000/rx_processing/pgap_theta_error_a4', 'BEAM0000/rx_processing/pgap_theta_error_a5', 'BEAM0000/rx_processing/pgap_theta_error_a6', 'BEAM0000/rx_processing/rg_a1', 'BEAM0000/rx_processing/rg_a2', 'BEAM0000/rx_processing/rg_a3', 'BEAM0000/rx_processing/rg_a4', 'BEAM0000/rx_processing/rg_a5', 'BEAM0000/rx_processing/rg_a6', 'BEAM0000/rx_processing/rg_eg_amplitude_a1', 'BEAM0000/rx_processing/rg_eg_amplitude_a2', 'BEAM0000/rx_processing/rg_eg_amplitude_a3', 'BEAM0000/rx_processing/rg_eg_amplitude_a4', 'BEAM0000/rx_processing/rg_eg_amplitude_a5', 'BEAM0000/rx_processing/rg_eg_amplitude_a6', 'BEAM0000/rx_processing/rg_eg_amplitude_error_a1', 'BEAM0000/rx_processing/rg_eg_amplitude_error_a2', 'BEAM0000/rx_processing/rg_eg_amplitude_error_a3', 'BEAM0000/rx_processing/rg_eg_amplitude_error_a4', 'BEAM0000/rx_processing/rg_eg_amplitude_error_a5', 'BEAM0000/rx_processing/rg_eg_amplitude_error_a6', 'BEAM0000/rx_processing/rg_eg_center_a1', 'BEAM0000/rx_processing/rg_eg_center_a2', 'BEAM0000/rx_processing/rg_eg_center_a3', 'BEAM0000/rx_processing/rg_eg_center_a4', 'BEAM0000/rx_processing/rg_eg_center_a5', 'BEAM0000/rx_processing/rg_eg_center_a6', 'BEAM0000/rx_processing/rg_eg_center_error_a1', 'BEAM0000/rx_processing/rg_eg_center_error_a2', 'BEAM0000/rx_processing/rg_eg_center_error_a3', 'BEAM0000/rx_processing/rg_eg_center_error_a4', 'BEAM0000/rx_processing/rg_eg_center_error_a5', 'BEAM0000/rx_processing/rg_eg_center_error_a6', 'BEAM0000/rx_processing/rg_eg_chisq_a1', 'BEAM0000/rx_processing/rg_eg_chisq_a2', 'BEAM0000/rx_processing/rg_eg_chisq_a3', 'BEAM0000/rx_processing/rg_eg_chisq_a4', 'BEAM0000/rx_processing/rg_eg_chisq_a5', 'BEAM0000/rx_processing/rg_eg_chisq_a6', 'BEAM0000/rx_processing/rg_eg_flag_a1', 'BEAM0000/rx_processing/rg_eg_flag_a2', 'BEAM0000/rx_processing/rg_eg_flag_a3', 'BEAM0000/rx_processing/rg_eg_flag_a4', 'BEAM0000/rx_processing/rg_eg_flag_a5', 'BEAM0000/rx_processing/rg_eg_flag_a6', 'BEAM0000/rx_processing/rg_eg_gamma_a1', 'BEAM0000/rx_processing/rg_eg_gamma_a2', 'BEAM0000/rx_processing/rg_eg_gamma_a3', 'BEAM0000/rx_processing/rg_eg_gamma_a4', 'BEAM0000/rx_processing/rg_eg_gamma_a5', 'BEAM0000/rx_processing/rg_eg_gamma_a6', 'BEAM0000/rx_processing/rg_eg_gamma_error_a1', 'BEAM0000/rx_processing/rg_eg_gamma_error_a2', 'BEAM0000/rx_processing/rg_eg_gamma_error_a3', 'BEAM0000/rx_processing/rg_eg_gamma_error_a4', 'BEAM0000/rx_processing/rg_eg_gamma_error_a5', 'BEAM0000/rx_processing/rg_eg_gamma_error_a6', 'BEAM0000/rx_processing/rg_eg_niter_a1', 'BEAM0000/rx_processing/rg_eg_niter_a2', 'BEAM0000/rx_processing/rg_eg_niter_a3', 'BEAM0000/rx_processing/rg_eg_niter_a4', 'BEAM0000/rx_processing/rg_eg_niter_a5', 'BEAM0000/rx_processing/rg_eg_niter_a6', 'BEAM0000/rx_processing/rg_eg_sigma_a1', 'BEAM0000/rx_processing/rg_eg_sigma_a2', 'BEAM0000/rx_processing/rg_eg_sigma_a3', 'BEAM0000/rx_processing/rg_eg_sigma_a4', 'BEAM0000/rx_processing/rg_eg_sigma_a5', 'BEAM0000/rx_processing/rg_eg_sigma_a6', 'BEAM0000/rx_processing/rg_eg_sigma_error_a1', 'BEAM0000/rx_processing/rg_eg_sigma_error_a2', 'BEAM0000/rx_processing/rg_eg_sigma_error_a3', 'BEAM0000/rx_processing/rg_eg_sigma_error_a4', 'BEAM0000/rx_processing/rg_eg_sigma_error_a5', 'BEAM0000/rx_processing/rg_eg_sigma_error_a6', 'BEAM0000/rx_processing/rg_error_a1', 'BEAM0000/rx_processing/rg_error_a2', 'BEAM0000/rx_processing/rg_error_a3', 'BEAM0000/rx_processing/rg_error_a4', 'BEAM0000/rx_processing/rg_error_a5', 'BEAM0000/rx_processing/rg_error_a6', 'BEAM0000/rx_processing/rv_a1', 'BEAM0000/rx_processing/rv_a2', 'BEAM0000/rx_processing/rv_a3', 'BEAM0000/rx_processing/rv_a4', 'BEAM0000/rx_processing/rv_a5', 'BEAM0000/rx_processing/rv_a6', 'BEAM0000/rx_processing/rx_energy_a1', 'BEAM0000/rx_processing/rx_energy_a2', 'BEAM0000/rx_processing/rx_energy_a3', 'BEAM0000/rx_processing/rx_energy_a4', 'BEAM0000/rx_processing/rx_energy_a5', 'BEAM0000/rx_processing/rx_energy_a6', 'BEAM0000/rx_processing/shot_number', 'BEAM0000/rx_range_highestreturn', 'BEAM0000/rx_sample_count', 'BEAM0000/rx_sample_start_index', 'BEAM0000/selected_l2a_algorithm', 'BEAM0000/selected_mode', 'BEAM0000/selected_mode_flag', 'BEAM0000/selected_rg_algorithm', 'BEAM0000/sensitivity', 'BEAM0000/shot_number', 'BEAM0000/stale_return_flag', 'BEAM0000/surface_flag', 'BEAM0001/algorithmrun_flag', 'BEAM0001/ancillary/dz', 'BEAM0001/ancillary/l2a_alg_count', 'BEAM0001/ancillary/maxheight_cuttoff', 'BEAM0001/ancillary/rg_eg_constraint_center_buffer', 'BEAM0001/ancillary/rg_eg_mpfit_max_func_evals', 'BEAM0001/ancillary/rg_eg_mpfit_maxiters', 'BEAM0001/ancillary/rg_eg_mpfit_tolerance', 'BEAM0001/ancillary/signal_search_buff', 'BEAM0001/ancillary/tx_noise_stddev_multiplier', 'BEAM0001/beam', 'BEAM0001/channel', 'BEAM0001/cover', 'BEAM0001/cover_z', 'BEAM0001/fhd_normal', 'BEAM0001/geolocation/degrade_flag', 'BEAM0001/geolocation/delta_time', 'BEAM0001/geolocation/digital_elevation_model', 'BEAM0001/geolocation/elev_highestreturn', 'BEAM0001/geolocation/elev_lowestmode', 'BEAM0001/geolocation/elevation_bin0', 'BEAM0001/geolocation/elevation_bin0_error', 'BEAM0001/geolocation/elevation_lastbin', 'BEAM0001/geolocation/elevation_lastbin_error', 'BEAM0001/geolocation/height_bin0', 'BEAM0001/geolocation/height_lastbin', 'BEAM0001/geolocation/lat_highestreturn', 'BEAM0001/geolocation/lat_lowestmode', 'BEAM0001/geolocation/latitude_bin0', 'BEAM0001/geolocation/latitude_bin0_error', 'BEAM0001/geolocation/latitude_lastbin', 'BEAM0001/geolocation/latitude_lastbin_error', 'BEAM0001/geolocation/local_beam_azimuth', 'BEAM0001/geolocation/local_beam_elevation', 'BEAM0001/geolocation/lon_highestreturn', 'BEAM0001/geolocation/lon_lowestmode', 'BEAM0001/geolocation/longitude_bin0', 'BEAM0001/geolocation/longitude_bin0_error', 'BEAM0001/geolocation/longitude_lastbin', 'BEAM0001/geolocation/longitude_lastbin_error', 'BEAM0001/geolocation/shot_number', 'BEAM0001/geolocation/solar_azimuth', 'BEAM0001/geolocation/solar_elevation', 'BEAM0001/l2a_quality_flag', 'BEAM0001/l2b_quality_flag', 'BEAM0001/land_cover_data/landsat_treecover', 'BEAM0001/land_cover_data/landsat_water_persistence', 'BEAM0001/land_cover_data/leaf_off_doy', 'BEAM0001/land_cover_data/leaf_off_flag', 'BEAM0001/land_cover_data/leaf_on_cycle', 'BEAM0001/land_cover_data/leaf_on_doy', 'BEAM0001/land_cover_data/modis_nonvegetated', 'BEAM0001/land_cover_data/modis_nonvegetated_sd', 'BEAM0001/land_cover_data/modis_treecover', 'BEAM0001/land_cover_data/modis_treecover_sd', 'BEAM0001/land_cover_data/pft_class', 'BEAM0001/land_cover_data/region_class', 'BEAM0001/land_cover_data/urban_focal_window_size', 'BEAM0001/land_cover_data/urban_proportion', 'BEAM0001/master_frac', 'BEAM0001/master_int', 'BEAM0001/num_detectedmodes', 'BEAM0001/omega', 'BEAM0001/pai', 'BEAM0001/pai_z', 'BEAM0001/pavd_z', 'BEAM0001/pgap_theta', 'BEAM0001/pgap_theta_error', 'BEAM0001/pgap_theta_z', 'BEAM0001/rg', 'BEAM0001/rh100', 'BEAM0001/rhog', 'BEAM0001/rhog_error', 'BEAM0001/rhov', 'BEAM0001/rhov_error', 'BEAM0001/rossg', 'BEAM0001/rv', 'BEAM0001/rx_processing/algorithmrun_flag_a1', 'BEAM0001/rx_processing/algorithmrun_flag_a2', 'BEAM0001/rx_processing/algorithmrun_flag_a3', 'BEAM0001/rx_processing/algorithmrun_flag_a4', 'BEAM0001/rx_processing/algorithmrun_flag_a5', 'BEAM0001/rx_processing/algorithmrun_flag_a6', 'BEAM0001/rx_processing/pgap_theta_a1', 'BEAM0001/rx_processing/pgap_theta_a2', 'BEAM0001/rx_processing/pgap_theta_a3', 'BEAM0001/rx_processing/pgap_theta_a4', 'BEAM0001/rx_processing/pgap_theta_a5', 'BEAM0001/rx_processing/pgap_theta_a6', 'BEAM0001/rx_processing/pgap_theta_error_a1', 'BEAM0001/rx_processing/pgap_theta_error_a2', 'BEAM0001/rx_processing/pgap_theta_error_a3', 'BEAM0001/rx_processing/pgap_theta_error_a4', 'BEAM0001/rx_processing/pgap_theta_error_a5', 'BEAM0001/rx_processing/pgap_theta_error_a6', 'BEAM0001/rx_processing/rg_a1', 'BEAM0001/rx_processing/rg_a2', 'BEAM0001/rx_processing/rg_a3', 'BEAM0001/rx_processing/rg_a4', 'BEAM0001/rx_processing/rg_a5', 'BEAM0001/rx_processing/rg_a6', 'BEAM0001/rx_processing/rg_eg_amplitude_a1', 'BEAM0001/rx_processing/rg_eg_amplitude_a2', 'BEAM0001/rx_processing/rg_eg_amplitude_a3', 'BEAM0001/rx_processing/rg_eg_amplitude_a4', 'BEAM0001/rx_processing/rg_eg_amplitude_a5', 'BEAM0001/rx_processing/rg_eg_amplitude_a6', 'BEAM0001/rx_processing/rg_eg_amplitude_error_a1', 'BEAM0001/rx_processing/rg_eg_amplitude_error_a2', 'BEAM0001/rx_processing/rg_eg_amplitude_error_a3', 'BEAM0001/rx_processing/rg_eg_amplitude_error_a4', 'BEAM0001/rx_processing/rg_eg_amplitude_error_a5', 'BEAM0001/rx_processing/rg_eg_amplitude_error_a6', 'BEAM0001/rx_processing/rg_eg_center_a1', 'BEAM0001/rx_processing/rg_eg_center_a2', 'BEAM0001/rx_processing/rg_eg_center_a3', 'BEAM0001/rx_processing/rg_eg_center_a4', 'BEAM0001/rx_processing/rg_eg_center_a5', 'BEAM0001/rx_processing/rg_eg_center_a6', 'BEAM0001/rx_processing/rg_eg_center_error_a1', 'BEAM0001/rx_processing/rg_eg_center_error_a2', 'BEAM0001/rx_processing/rg_eg_center_error_a3', 'BEAM0001/rx_processing/rg_eg_center_error_a4', 'BEAM0001/rx_processing/rg_eg_center_error_a5', 'BEAM0001/rx_processing/rg_eg_center_error_a6', 'BEAM0001/rx_processing/rg_eg_chisq_a1', 'BEAM0001/rx_processing/rg_eg_chisq_a2', 'BEAM0001/rx_processing/rg_eg_chisq_a3', 'BEAM0001/rx_processing/rg_eg_chisq_a4', 'BEAM0001/rx_processing/rg_eg_chisq_a5', 'BEAM0001/rx_processing/rg_eg_chisq_a6', 'BEAM0001/rx_processing/rg_eg_flag_a1', 'BEAM0001/rx_processing/rg_eg_flag_a2', 'BEAM0001/rx_processing/rg_eg_flag_a3', 'BEAM0001/rx_processing/rg_eg_flag_a4', 'BEAM0001/rx_processing/rg_eg_flag_a5', 'BEAM0001/rx_processing/rg_eg_flag_a6', 'BEAM0001/rx_processing/rg_eg_gamma_a1', 'BEAM0001/rx_processing/rg_eg_gamma_a2', 'BEAM0001/rx_processing/rg_eg_gamma_a3', 'BEAM0001/rx_processing/rg_eg_gamma_a4', 'BEAM0001/rx_processing/rg_eg_gamma_a5', 'BEAM0001/rx_processing/rg_eg_gamma_a6', 'BEAM0001/rx_processing/rg_eg_gamma_error_a1', 'BEAM0001/rx_processing/rg_eg_gamma_error_a2', 'BEAM0001/rx_processing/rg_eg_gamma_error_a3', 'BEAM0001/rx_processing/rg_eg_gamma_error_a4', 'BEAM0001/rx_processing/rg_eg_gamma_error_a5', 'BEAM0001/rx_processing/rg_eg_gamma_error_a6', 'BEAM0001/rx_processing/rg_eg_niter_a1', 'BEAM0001/rx_processing/rg_eg_niter_a2', 'BEAM0001/rx_processing/rg_eg_niter_a3', 'BEAM0001/rx_processing/rg_eg_niter_a4', 'BEAM0001/rx_processing/rg_eg_niter_a5', 'BEAM0001/rx_processing/rg_eg_niter_a6', 'BEAM0001/rx_processing/rg_eg_sigma_a1', 'BEAM0001/rx_processing/rg_eg_sigma_a2', 'BEAM0001/rx_processing/rg_eg_sigma_a3', 'BEAM0001/rx_processing/rg_eg_sigma_a4', 'BEAM0001/rx_processing/rg_eg_sigma_a5', 'BEAM0001/rx_processing/rg_eg_sigma_a6', 'BEAM0001/rx_processing/rg_eg_sigma_error_a1', 'BEAM0001/rx_processing/rg_eg_sigma_error_a2', 'BEAM0001/rx_processing/rg_eg_sigma_error_a3', 'BEAM0001/rx_processing/rg_eg_sigma_error_a4', 'BEAM0001/rx_processing/rg_eg_sigma_error_a5', 'BEAM0001/rx_processing/rg_eg_sigma_error_a6', 'BEAM0001/rx_processing/rg_error_a1', 'BEAM0001/rx_processing/rg_error_a2', 'BEAM0001/rx_processing/rg_error_a3', 'BEAM0001/rx_processing/rg_error_a4', 'BEAM0001/rx_processing/rg_error_a5', 'BEAM0001/rx_processing/rg_error_a6', 'BEAM0001/rx_processing/rv_a1', 'BEAM0001/rx_processing/rv_a2', 'BEAM0001/rx_processing/rv_a3', 'BEAM0001/rx_processing/rv_a4', 'BEAM0001/rx_processing/rv_a5', 'BEAM0001/rx_processing/rv_a6', 'BEAM0001/rx_processing/rx_energy_a1', 'BEAM0001/rx_processing/rx_energy_a2', 'BEAM0001/rx_processing/rx_energy_a3', 'BEAM0001/rx_processing/rx_energy_a4', 'BEAM0001/rx_processing/rx_energy_a5', 'BEAM0001/rx_processing/rx_energy_a6', 'BEAM0001/rx_processing/shot_number', 'BEAM0001/rx_range_highestreturn', 'BEAM0001/rx_sample_count', 'BEAM0001/rx_sample_start_index', 'BEAM0001/selected_l2a_algorithm', 'BEAM0001/selected_mode', 'BEAM0001/selected_mode_flag', 'BEAM0001/selected_rg_algorithm', 'BEAM0001/sensitivity', 'BEAM0001/shot_number', 'BEAM0001/stale_return_flag', 'BEAM0001/surface_flag', 'BEAM0010/algorithmrun_flag', 'BEAM0010/ancillary/dz', 'BEAM0010/ancillary/l2a_alg_count', 'BEAM0010/ancillary/maxheight_cuttoff', 'BEAM0010/ancillary/rg_eg_constraint_center_buffer', 'BEAM0010/ancillary/rg_eg_mpfit_max_func_evals', 'BEAM0010/ancillary/rg_eg_mpfit_maxiters', 'BEAM0010/ancillary/rg_eg_mpfit_tolerance', 'BEAM0010/ancillary/signal_search_buff', 'BEAM0010/ancillary/tx_noise_stddev_multiplier', 'BEAM0010/beam', 'BEAM0010/channel', 'BEAM0010/cover', 'BEAM0010/cover_z', 'BEAM0010/fhd_normal', 'BEAM0010/geolocation/degrade_flag', 'BEAM0010/geolocation/delta_time', 'BEAM0010/geolocation/digital_elevation_model', 'BEAM0010/geolocation/elev_highestreturn', 'BEAM0010/geolocation/elev_lowestmode', 'BEAM0010/geolocation/elevation_bin0', 'BEAM0010/geolocation/elevation_bin0_error', 'BEAM0010/geolocation/elevation_lastbin', 'BEAM0010/geolocation/elevation_lastbin_error', 'BEAM0010/geolocation/height_bin0', 'BEAM0010/geolocation/height_lastbin', 'BEAM0010/geolocation/lat_highestreturn', 'BEAM0010/geolocation/lat_lowestmode', 'BEAM0010/geolocation/latitude_bin0', 'BEAM0010/geolocation/latitude_bin0_error', 'BEAM0010/geolocation/latitude_lastbin', 'BEAM0010/geolocation/latitude_lastbin_error', 'BEAM0010/geolocation/local_beam_azimuth', 'BEAM0010/geolocation/local_beam_elevation', 'BEAM0010/geolocation/lon_highestreturn', 'BEAM0010/geolocation/lon_lowestmode', 'BEAM0010/geolocation/longitude_bin0', 'BEAM0010/geolocation/longitude_bin0_error', 'BEAM0010/geolocation/longitude_lastbin', 'BEAM0010/geolocation/longitude_lastbin_error', 'BEAM0010/geolocation/shot_number', 'BEAM0010/geolocation/solar_azimuth', 'BEAM0010/geolocation/solar_elevation', 'BEAM0010/l2a_quality_flag', 'BEAM0010/l2b_quality_flag', 'BEAM0010/land_cover_data/landsat_treecover', 'BEAM0010/land_cover_data/landsat_water_persistence', 'BEAM0010/land_cover_data/leaf_off_doy', 'BEAM0010/land_cover_data/leaf_off_flag', 'BEAM0010/land_cover_data/leaf_on_cycle', 'BEAM0010/land_cover_data/leaf_on_doy', 'BEAM0010/land_cover_data/modis_nonvegetated', 'BEAM0010/land_cover_data/modis_nonvegetated_sd', 'BEAM0010/land_cover_data/modis_treecover', 'BEAM0010/land_cover_data/modis_treecover_sd', 'BEAM0010/land_cover_data/pft_class', 'BEAM0010/land_cover_data/region_class', 'BEAM0010/land_cover_data/urban_focal_window_size', 'BEAM0010/land_cover_data/urban_proportion', 'BEAM0010/master_frac', 'BEAM0010/master_int', 'BEAM0010/num_detectedmodes', 'BEAM0010/omega', 'BEAM0010/pai', 'BEAM0010/pai_z', 'BEAM0010/pavd_z', 'BEAM0010/pgap_theta', 'BEAM0010/pgap_theta_error', 'BEAM0010/pgap_theta_z', 'BEAM0010/rg', 'BEAM0010/rh100', 'BEAM0010/rhog', 'BEAM0010/rhog_error', 'BEAM0010/rhov', 'BEAM0010/rhov_error', 'BEAM0010/rossg', 'BEAM0010/rv', 'BEAM0010/rx_processing/algorithmrun_flag_a1', 'BEAM0010/rx_processing/algorithmrun_flag_a2', 'BEAM0010/rx_processing/algorithmrun_flag_a3', 'BEAM0010/rx_processing/algorithmrun_flag_a4', 'BEAM0010/rx_processing/algorithmrun_flag_a5', 'BEAM0010/rx_processing/algorithmrun_flag_a6', 'BEAM0010/rx_processing/pgap_theta_a1', 'BEAM0010/rx_processing/pgap_theta_a2', 'BEAM0010/rx_processing/pgap_theta_a3', 'BEAM0010/rx_processing/pgap_theta_a4', 'BEAM0010/rx_processing/pgap_theta_a5', 'BEAM0010/rx_processing/pgap_theta_a6', 'BEAM0010/rx_processing/pgap_theta_error_a1', 'BEAM0010/rx_processing/pgap_theta_error_a2', 'BEAM0010/rx_processing/pgap_theta_error_a3', 'BEAM0010/rx_processing/pgap_theta_error_a4', 'BEAM0010/rx_processing/pgap_theta_error_a5', 'BEAM0010/rx_processing/pgap_theta_error_a6', 'BEAM0010/rx_processing/rg_a1', 'BEAM0010/rx_processing/rg_a2', 'BEAM0010/rx_processing/rg_a3', 'BEAM0010/rx_processing/rg_a4', 'BEAM0010/rx_processing/rg_a5', 'BEAM0010/rx_processing/rg_a6', 'BEAM0010/rx_processing/rg_eg_amplitude_a1', 'BEAM0010/rx_processing/rg_eg_amplitude_a2', 'BEAM0010/rx_processing/rg_eg_amplitude_a3', 'BEAM0010/rx_processing/rg_eg_amplitude_a4', 'BEAM0010/rx_processing/rg_eg_amplitude_a5', 'BEAM0010/rx_processing/rg_eg_amplitude_a6', 'BEAM0010/rx_processing/rg_eg_amplitude_error_a1', 'BEAM0010/rx_processing/rg_eg_amplitude_error_a2', 'BEAM0010/rx_processing/rg_eg_amplitude_error_a3', 'BEAM0010/rx_processing/rg_eg_amplitude_error_a4', 'BEAM0010/rx_processing/rg_eg_amplitude_error_a5', 'BEAM0010/rx_processing/rg_eg_amplitude_error_a6', 'BEAM0010/rx_processing/rg_eg_center_a1', 'BEAM0010/rx_processing/rg_eg_center_a2', 'BEAM0010/rx_processing/rg_eg_center_a3', 'BEAM0010/rx_processing/rg_eg_center_a4', 'BEAM0010/rx_processing/rg_eg_center_a5', 'BEAM0010/rx_processing/rg_eg_center_a6', 'BEAM0010/rx_processing/rg_eg_center_error_a1', 'BEAM0010/rx_processing/rg_eg_center_error_a2', 'BEAM0010/rx_processing/rg_eg_center_error_a3', 'BEAM0010/rx_processing/rg_eg_center_error_a4', 'BEAM0010/rx_processing/rg_eg_center_error_a5', 'BEAM0010/rx_processing/rg_eg_center_error_a6', 'BEAM0010/rx_processing/rg_eg_chisq_a1', 'BEAM0010/rx_processing/rg_eg_chisq_a2', 'BEAM0010/rx_processing/rg_eg_chisq_a3', 'BEAM0010/rx_processing/rg_eg_chisq_a4', 'BEAM0010/rx_processing/rg_eg_chisq_a5', 'BEAM0010/rx_processing/rg_eg_chisq_a6', 'BEAM0010/rx_processing/rg_eg_flag_a1', 'BEAM0010/rx_processing/rg_eg_flag_a2', 'BEAM0010/rx_processing/rg_eg_flag_a3', 'BEAM0010/rx_processing/rg_eg_flag_a4', 'BEAM0010/rx_processing/rg_eg_flag_a5', 'BEAM0010/rx_processing/rg_eg_flag_a6', 'BEAM0010/rx_processing/rg_eg_gamma_a1', 'BEAM0010/rx_processing/rg_eg_gamma_a2', 'BEAM0010/rx_processing/rg_eg_gamma_a3', 'BEAM0010/rx_processing/rg_eg_gamma_a4', 'BEAM0010/rx_processing/rg_eg_gamma_a5', 'BEAM0010/rx_processing/rg_eg_gamma_a6', 'BEAM0010/rx_processing/rg_eg_gamma_error_a1', 'BEAM0010/rx_processing/rg_eg_gamma_error_a2', 'BEAM0010/rx_processing/rg_eg_gamma_error_a3', 'BEAM0010/rx_processing/rg_eg_gamma_error_a4', 'BEAM0010/rx_processing/rg_eg_gamma_error_a5', 'BEAM0010/rx_processing/rg_eg_gamma_error_a6', 'BEAM0010/rx_processing/rg_eg_niter_a1', 'BEAM0010/rx_processing/rg_eg_niter_a2', 'BEAM0010/rx_processing/rg_eg_niter_a3', 'BEAM0010/rx_processing/rg_eg_niter_a4', 'BEAM0010/rx_processing/rg_eg_niter_a5', 'BEAM0010/rx_processing/rg_eg_niter_a6', 'BEAM0010/rx_processing/rg_eg_sigma_a1', 'BEAM0010/rx_processing/rg_eg_sigma_a2', 'BEAM0010/rx_processing/rg_eg_sigma_a3', 'BEAM0010/rx_processing/rg_eg_sigma_a4', 'BEAM0010/rx_processing/rg_eg_sigma_a5', 'BEAM0010/rx_processing/rg_eg_sigma_a6', 'BEAM0010/rx_processing/rg_eg_sigma_error_a1', 'BEAM0010/rx_processing/rg_eg_sigma_error_a2', 'BEAM0010/rx_processing/rg_eg_sigma_error_a3', 'BEAM0010/rx_processing/rg_eg_sigma_error_a4', 'BEAM0010/rx_processing/rg_eg_sigma_error_a5', 'BEAM0010/rx_processing/rg_eg_sigma_error_a6', 'BEAM0010/rx_processing/rg_error_a1', 'BEAM0010/rx_processing/rg_error_a2', 'BEAM0010/rx_processing/rg_error_a3', 'BEAM0010/rx_processing/rg_error_a4', 'BEAM0010/rx_processing/rg_error_a5', 'BEAM0010/rx_processing/rg_error_a6', 'BEAM0010/rx_processing/rv_a1', 'BEAM0010/rx_processing/rv_a2', 'BEAM0010/rx_processing/rv_a3', 'BEAM0010/rx_processing/rv_a4', 'BEAM0010/rx_processing/rv_a5', 'BEAM0010/rx_processing/rv_a6', 'BEAM0010/rx_processing/rx_energy_a1', 'BEAM0010/rx_processing/rx_energy_a2', 'BEAM0010/rx_processing/rx_energy_a3', 'BEAM0010/rx_processing/rx_energy_a4', 'BEAM0010/rx_processing/rx_energy_a5', 'BEAM0010/rx_processing/rx_energy_a6', 'BEAM0010/rx_processing/shot_number', 'BEAM0010/rx_range_highestreturn', 'BEAM0010/rx_sample_count', 'BEAM0010/rx_sample_start_index', 'BEAM0010/selected_l2a_algorithm', 'BEAM0010/selected_mode', 'BEAM0010/selected_mode_flag', 'BEAM0010/selected_rg_algorithm', 'BEAM0010/sensitivity', 'BEAM0010/shot_number', 'BEAM0010/stale_return_flag', 'BEAM0010/surface_flag', 'BEAM0011/algorithmrun_flag', 'BEAM0011/ancillary/dz', 'BEAM0011/ancillary/l2a_alg_count', 'BEAM0011/ancillary/maxheight_cuttoff', 'BEAM0011/ancillary/rg_eg_constraint_center_buffer', 'BEAM0011/ancillary/rg_eg_mpfit_max_func_evals', 'BEAM0011/ancillary/rg_eg_mpfit_maxiters', 'BEAM0011/ancillary/rg_eg_mpfit_tolerance', 'BEAM0011/ancillary/signal_search_buff', 'BEAM0011/ancillary/tx_noise_stddev_multiplier', 'BEAM0011/beam', 'BEAM0011/channel', 'BEAM0011/cover', 'BEAM0011/cover_z', 'BEAM0011/fhd_normal', 'BEAM0011/geolocation/degrade_flag', 'BEAM0011/geolocation/delta_time', 'BEAM0011/geolocation/digital_elevation_model', 'BEAM0011/geolocation/elev_highestreturn', 'BEAM0011/geolocation/elev_lowestmode', 'BEAM0011/geolocation/elevation_bin0', 'BEAM0011/geolocation/elevation_bin0_error', 'BEAM0011/geolocation/elevation_lastbin', 'BEAM0011/geolocation/elevation_lastbin_error', 'BEAM0011/geolocation/height_bin0', 'BEAM0011/geolocation/height_lastbin', 'BEAM0011/geolocation/lat_highestreturn', 'BEAM0011/geolocation/lat_lowestmode', 'BEAM0011/geolocation/latitude_bin0', 'BEAM0011/geolocation/latitude_bin0_error', 'BEAM0011/geolocation/latitude_lastbin', 'BEAM0011/geolocation/latitude_lastbin_error', 'BEAM0011/geolocation/local_beam_azimuth', 'BEAM0011/geolocation/local_beam_elevation', 'BEAM0011/geolocation/lon_highestreturn', 'BEAM0011/geolocation/lon_lowestmode', 'BEAM0011/geolocation/longitude_bin0', 'BEAM0011/geolocation/longitude_bin0_error', 'BEAM0011/geolocation/longitude_lastbin', 'BEAM0011/geolocation/longitude_lastbin_error', 'BEAM0011/geolocation/shot_number', 'BEAM0011/geolocation/solar_azimuth', 'BEAM0011/geolocation/solar_elevation', 'BEAM0011/l2a_quality_flag', 'BEAM0011/l2b_quality_flag', 'BEAM0011/land_cover_data/landsat_treecover', 'BEAM0011/land_cover_data/landsat_water_persistence', 'BEAM0011/land_cover_data/leaf_off_doy', 'BEAM0011/land_cover_data/leaf_off_flag', 'BEAM0011/land_cover_data/leaf_on_cycle', 'BEAM0011/land_cover_data/leaf_on_doy', 'BEAM0011/land_cover_data/modis_nonvegetated', 'BEAM0011/land_cover_data/modis_nonvegetated_sd', 'BEAM0011/land_cover_data/modis_treecover', 'BEAM0011/land_cover_data/modis_treecover_sd', 'BEAM0011/land_cover_data/pft_class', 'BEAM0011/land_cover_data/region_class', 'BEAM0011/land_cover_data/urban_focal_window_size', 'BEAM0011/land_cover_data/urban_proportion', 'BEAM0011/master_frac', 'BEAM0011/master_int', 'BEAM0011/num_detectedmodes', 'BEAM0011/omega', 'BEAM0011/pai', 'BEAM0011/pai_z', 'BEAM0011/pavd_z', 'BEAM0011/pgap_theta', 'BEAM0011/pgap_theta_error', 'BEAM0011/pgap_theta_z', 'BEAM0011/rg', 'BEAM0011/rh100', 'BEAM0011/rhog', 'BEAM0011/rhog_error', 'BEAM0011/rhov', 'BEAM0011/rhov_error', 'BEAM0011/rossg', 'BEAM0011/rv', 'BEAM0011/rx_processing/algorithmrun_flag_a1', 'BEAM0011/rx_processing/algorithmrun_flag_a2', 'BEAM0011/rx_processing/algorithmrun_flag_a3', 'BEAM0011/rx_processing/algorithmrun_flag_a4', 'BEAM0011/rx_processing/algorithmrun_flag_a5', 'BEAM0011/rx_processing/algorithmrun_flag_a6', 'BEAM0011/rx_processing/pgap_theta_a1', 'BEAM0011/rx_processing/pgap_theta_a2', 'BEAM0011/rx_processing/pgap_theta_a3', 'BEAM0011/rx_processing/pgap_theta_a4', 'BEAM0011/rx_processing/pgap_theta_a5', 'BEAM0011/rx_processing/pgap_theta_a6', 'BEAM0011/rx_processing/pgap_theta_error_a1', 'BEAM0011/rx_processing/pgap_theta_error_a2', 'BEAM0011/rx_processing/pgap_theta_error_a3', 'BEAM0011/rx_processing/pgap_theta_error_a4', 'BEAM0011/rx_processing/pgap_theta_error_a5', 'BEAM0011/rx_processing/pgap_theta_error_a6', 'BEAM0011/rx_processing/rg_a1', 'BEAM0011/rx_processing/rg_a2', 'BEAM0011/rx_processing/rg_a3', 'BEAM0011/rx_processing/rg_a4', 'BEAM0011/rx_processing/rg_a5', 'BEAM0011/rx_processing/rg_a6', 'BEAM0011/rx_processing/rg_eg_amplitude_a1', 'BEAM0011/rx_processing/rg_eg_amplitude_a2', 'BEAM0011/rx_processing/rg_eg_amplitude_a3', 'BEAM0011/rx_processing/rg_eg_amplitude_a4', 'BEAM0011/rx_processing/rg_eg_amplitude_a5', 'BEAM0011/rx_processing/rg_eg_amplitude_a6', 'BEAM0011/rx_processing/rg_eg_amplitude_error_a1', 'BEAM0011/rx_processing/rg_eg_amplitude_error_a2', 'BEAM0011/rx_processing/rg_eg_amplitude_error_a3', 'BEAM0011/rx_processing/rg_eg_amplitude_error_a4', 'BEAM0011/rx_processing/rg_eg_amplitude_error_a5', 'BEAM0011/rx_processing/rg_eg_amplitude_error_a6', 'BEAM0011/rx_processing/rg_eg_center_a1', 'BEAM0011/rx_processing/rg_eg_center_a2', 'BEAM0011/rx_processing/rg_eg_center_a3', 'BEAM0011/rx_processing/rg_eg_center_a4', 'BEAM0011/rx_processing/rg_eg_center_a5', 'BEAM0011/rx_processing/rg_eg_center_a6', 'BEAM0011/rx_processing/rg_eg_center_error_a1', 'BEAM0011/rx_processing/rg_eg_center_error_a2', 'BEAM0011/rx_processing/rg_eg_center_error_a3', 'BEAM0011/rx_processing/rg_eg_center_error_a4', 'BEAM0011/rx_processing/rg_eg_center_error_a5', 'BEAM0011/rx_processing/rg_eg_center_error_a6', 'BEAM0011/rx_processing/rg_eg_chisq_a1', 'BEAM0011/rx_processing/rg_eg_chisq_a2', 'BEAM0011/rx_processing/rg_eg_chisq_a3', 'BEAM0011/rx_processing/rg_eg_chisq_a4', 'BEAM0011/rx_processing/rg_eg_chisq_a5', 'BEAM0011/rx_processing/rg_eg_chisq_a6', 'BEAM0011/rx_processing/rg_eg_flag_a1', 'BEAM0011/rx_processing/rg_eg_flag_a2', 'BEAM0011/rx_processing/rg_eg_flag_a3', 'BEAM0011/rx_processing/rg_eg_flag_a4', 'BEAM0011/rx_processing/rg_eg_flag_a5', 'BEAM0011/rx_processing/rg_eg_flag_a6', 'BEAM0011/rx_processing/rg_eg_gamma_a1', 'BEAM0011/rx_processing/rg_eg_gamma_a2', 'BEAM0011/rx_processing/rg_eg_gamma_a3', 'BEAM0011/rx_processing/rg_eg_gamma_a4', 'BEAM0011/rx_processing/rg_eg_gamma_a5', 'BEAM0011/rx_processing/rg_eg_gamma_a6', 'BEAM0011/rx_processing/rg_eg_gamma_error_a1', 'BEAM0011/rx_processing/rg_eg_gamma_error_a2', 'BEAM0011/rx_processing/rg_eg_gamma_error_a3', 'BEAM0011/rx_processing/rg_eg_gamma_error_a4', 'BEAM0011/rx_processing/rg_eg_gamma_error_a5', 'BEAM0011/rx_processing/rg_eg_gamma_error_a6', 'BEAM0011/rx_processing/rg_eg_niter_a1', 'BEAM0011/rx_processing/rg_eg_niter_a2', 'BEAM0011/rx_processing/rg_eg_niter_a3', 'BEAM0011/rx_processing/rg_eg_niter_a4', 'BEAM0011/rx_processing/rg_eg_niter_a5', 'BEAM0011/rx_processing/rg_eg_niter_a6', 'BEAM0011/rx_processing/rg_eg_sigma_a1', 'BEAM0011/rx_processing/rg_eg_sigma_a2', 'BEAM0011/rx_processing/rg_eg_sigma_a3', 'BEAM0011/rx_processing/rg_eg_sigma_a4', 'BEAM0011/rx_processing/rg_eg_sigma_a5', 'BEAM0011/rx_processing/rg_eg_sigma_a6', 'BEAM0011/rx_processing/rg_eg_sigma_error_a1', 'BEAM0011/rx_processing/rg_eg_sigma_error_a2', 'BEAM0011/rx_processing/rg_eg_sigma_error_a3', 'BEAM0011/rx_processing/rg_eg_sigma_error_a4', 'BEAM0011/rx_processing/rg_eg_sigma_error_a5', 'BEAM0011/rx_processing/rg_eg_sigma_error_a6', 'BEAM0011/rx_processing/rg_error_a1', 'BEAM0011/rx_processing/rg_error_a2', 'BEAM0011/rx_processing/rg_error_a3', 'BEAM0011/rx_processing/rg_error_a4', 'BEAM0011/rx_processing/rg_error_a5', 'BEAM0011/rx_processing/rg_error_a6', 'BEAM0011/rx_processing/rv_a1', 'BEAM0011/rx_processing/rv_a2', 'BEAM0011/rx_processing/rv_a3', 'BEAM0011/rx_processing/rv_a4', 'BEAM0011/rx_processing/rv_a5', 'BEAM0011/rx_processing/rv_a6', 'BEAM0011/rx_processing/rx_energy_a1', 'BEAM0011/rx_processing/rx_energy_a2', 'BEAM0011/rx_processing/rx_energy_a3', 'BEAM0011/rx_processing/rx_energy_a4', 'BEAM0011/rx_processing/rx_energy_a5', 'BEAM0011/rx_processing/rx_energy_a6', 'BEAM0011/rx_processing/shot_number', 'BEAM0011/rx_range_highestreturn', 'BEAM0011/rx_sample_count', 'BEAM0011/rx_sample_start_index', 'BEAM0011/selected_l2a_algorithm', 'BEAM0011/selected_mode', 'BEAM0011/selected_mode_flag', 'BEAM0011/selected_rg_algorithm', 'BEAM0011/sensitivity', 'BEAM0011/shot_number', 'BEAM0011/stale_return_flag', 'BEAM0011/surface_flag', 'BEAM0101/algorithmrun_flag', 'BEAM0101/ancillary/dz', 'BEAM0101/ancillary/l2a_alg_count', 'BEAM0101/ancillary/maxheight_cuttoff', 'BEAM0101/ancillary/rg_eg_constraint_center_buffer', 'BEAM0101/ancillary/rg_eg_mpfit_max_func_evals', 'BEAM0101/ancillary/rg_eg_mpfit_maxiters', 'BEAM0101/ancillary/rg_eg_mpfit_tolerance', 'BEAM0101/ancillary/signal_search_buff', 'BEAM0101/ancillary/tx_noise_stddev_multiplier', 'BEAM0101/beam', 'BEAM0101/channel', 'BEAM0101/cover', 'BEAM0101/cover_z', 'BEAM0101/fhd_normal', 'BEAM0101/geolocation/degrade_flag', 'BEAM0101/geolocation/delta_time', 'BEAM0101/geolocation/digital_elevation_model', 'BEAM0101/geolocation/elev_highestreturn', 'BEAM0101/geolocation/elev_lowestmode', 'BEAM0101/geolocation/elevation_bin0', 'BEAM0101/geolocation/elevation_bin0_error', 'BEAM0101/geolocation/elevation_lastbin', 'BEAM0101/geolocation/elevation_lastbin_error', 'BEAM0101/geolocation/height_bin0', 'BEAM0101/geolocation/height_lastbin', 'BEAM0101/geolocation/lat_highestreturn', 'BEAM0101/geolocation/lat_lowestmode', 'BEAM0101/geolocation/latitude_bin0', 'BEAM0101/geolocation/latitude_bin0_error', 'BEAM0101/geolocation/latitude_lastbin', 'BEAM0101/geolocation/latitude_lastbin_error', 'BEAM0101/geolocation/local_beam_azimuth', 'BEAM0101/geolocation/local_beam_elevation', 'BEAM0101/geolocation/lon_highestreturn', 'BEAM0101/geolocation/lon_lowestmode', 'BEAM0101/geolocation/longitude_bin0', 'BEAM0101/geolocation/longitude_bin0_error', 'BEAM0101/geolocation/longitude_lastbin', 'BEAM0101/geolocation/longitude_lastbin_error', 'BEAM0101/geolocation/shot_number', 'BEAM0101/geolocation/solar_azimuth', 'BEAM0101/geolocation/solar_elevation', 'BEAM0101/l2a_quality_flag', 'BEAM0101/l2b_quality_flag', 'BEAM0101/land_cover_data/landsat_treecover', 'BEAM0101/land_cover_data/landsat_water_persistence', 'BEAM0101/land_cover_data/leaf_off_doy', 'BEAM0101/land_cover_data/leaf_off_flag', 'BEAM0101/land_cover_data/leaf_on_cycle', 'BEAM0101/land_cover_data/leaf_on_doy', 'BEAM0101/land_cover_data/modis_nonvegetated', 'BEAM0101/land_cover_data/modis_nonvegetated_sd', 'BEAM0101/land_cover_data/modis_treecover', 'BEAM0101/land_cover_data/modis_treecover_sd', 'BEAM0101/land_cover_data/pft_class', 'BEAM0101/land_cover_data/region_class', 'BEAM0101/land_cover_data/urban_focal_window_size', 'BEAM0101/land_cover_data/urban_proportion', 'BEAM0101/master_frac', 'BEAM0101/master_int', 'BEAM0101/num_detectedmodes', 'BEAM0101/omega', 'BEAM0101/pai', 'BEAM0101/pai_z', 'BEAM0101/pavd_z', 'BEAM0101/pgap_theta', 'BEAM0101/pgap_theta_error', 'BEAM0101/pgap_theta_z', 'BEAM0101/rg', 'BEAM0101/rh100', 'BEAM0101/rhog', 'BEAM0101/rhog_error', 'BEAM0101/rhov', 'BEAM0101/rhov_error', 'BEAM0101/rossg', 'BEAM0101/rv', 'BEAM0101/rx_processing/algorithmrun_flag_a1', 'BEAM0101/rx_processing/algorithmrun_flag_a2', 'BEAM0101/rx_processing/algorithmrun_flag_a3', 'BEAM0101/rx_processing/algorithmrun_flag_a4', 'BEAM0101/rx_processing/algorithmrun_flag_a5', 'BEAM0101/rx_processing/algorithmrun_flag_a6', 'BEAM0101/rx_processing/pgap_theta_a1', 'BEAM0101/rx_processing/pgap_theta_a2', 'BEAM0101/rx_processing/pgap_theta_a3', 'BEAM0101/rx_processing/pgap_theta_a4', 'BEAM0101/rx_processing/pgap_theta_a5', 'BEAM0101/rx_processing/pgap_theta_a6', 'BEAM0101/rx_processing/pgap_theta_error_a1', 'BEAM0101/rx_processing/pgap_theta_error_a2', 'BEAM0101/rx_processing/pgap_theta_error_a3', 'BEAM0101/rx_processing/pgap_theta_error_a4', 'BEAM0101/rx_processing/pgap_theta_error_a5', 'BEAM0101/rx_processing/pgap_theta_error_a6', 'BEAM0101/rx_processing/rg_a1', 'BEAM0101/rx_processing/rg_a2', 'BEAM0101/rx_processing/rg_a3', 'BEAM0101/rx_processing/rg_a4', 'BEAM0101/rx_processing/rg_a5', 'BEAM0101/rx_processing/rg_a6', 'BEAM0101/rx_processing/rg_eg_amplitude_a1', 'BEAM0101/rx_processing/rg_eg_amplitude_a2', 'BEAM0101/rx_processing/rg_eg_amplitude_a3', 'BEAM0101/rx_processing/rg_eg_amplitude_a4', 'BEAM0101/rx_processing/rg_eg_amplitude_a5', 'BEAM0101/rx_processing/rg_eg_amplitude_a6', 'BEAM0101/rx_processing/rg_eg_amplitude_error_a1', 'BEAM0101/rx_processing/rg_eg_amplitude_error_a2', 'BEAM0101/rx_processing/rg_eg_amplitude_error_a3', 'BEAM0101/rx_processing/rg_eg_amplitude_error_a4', 'BEAM0101/rx_processing/rg_eg_amplitude_error_a5', 'BEAM0101/rx_processing/rg_eg_amplitude_error_a6', 'BEAM0101/rx_processing/rg_eg_center_a1', 'BEAM0101/rx_processing/rg_eg_center_a2', 'BEAM0101/rx_processing/rg_eg_center_a3', 'BEAM0101/rx_processing/rg_eg_center_a4', 'BEAM0101/rx_processing/rg_eg_center_a5', 'BEAM0101/rx_processing/rg_eg_center_a6', 'BEAM0101/rx_processing/rg_eg_center_error_a1', 'BEAM0101/rx_processing/rg_eg_center_error_a2', 'BEAM0101/rx_processing/rg_eg_center_error_a3', 'BEAM0101/rx_processing/rg_eg_center_error_a4', 'BEAM0101/rx_processing/rg_eg_center_error_a5', 'BEAM0101/rx_processing/rg_eg_center_error_a6', 'BEAM0101/rx_processing/rg_eg_chisq_a1', 'BEAM0101/rx_processing/rg_eg_chisq_a2', 'BEAM0101/rx_processing/rg_eg_chisq_a3', 'BEAM0101/rx_processing/rg_eg_chisq_a4', 'BEAM0101/rx_processing/rg_eg_chisq_a5', 'BEAM0101/rx_processing/rg_eg_chisq_a6', 'BEAM0101/rx_processing/rg_eg_flag_a1', 'BEAM0101/rx_processing/rg_eg_flag_a2', 'BEAM0101/rx_processing/rg_eg_flag_a3', 'BEAM0101/rx_processing/rg_eg_flag_a4', 'BEAM0101/rx_processing/rg_eg_flag_a5', 'BEAM0101/rx_processing/rg_eg_flag_a6', 'BEAM0101/rx_processing/rg_eg_gamma_a1', 'BEAM0101/rx_processing/rg_eg_gamma_a2', 'BEAM0101/rx_processing/rg_eg_gamma_a3', 'BEAM0101/rx_processing/rg_eg_gamma_a4', 'BEAM0101/rx_processing/rg_eg_gamma_a5', 'BEAM0101/rx_processing/rg_eg_gamma_a6', 'BEAM0101/rx_processing/rg_eg_gamma_error_a1', 'BEAM0101/rx_processing/rg_eg_gamma_error_a2', 'BEAM0101/rx_processing/rg_eg_gamma_error_a3', 'BEAM0101/rx_processing/rg_eg_gamma_error_a4', 'BEAM0101/rx_processing/rg_eg_gamma_error_a5', 'BEAM0101/rx_processing/rg_eg_gamma_error_a6', 'BEAM0101/rx_processing/rg_eg_niter_a1', 'BEAM0101/rx_processing/rg_eg_niter_a2', 'BEAM0101/rx_processing/rg_eg_niter_a3', 'BEAM0101/rx_processing/rg_eg_niter_a4', 'BEAM0101/rx_processing/rg_eg_niter_a5', 'BEAM0101/rx_processing/rg_eg_niter_a6', 'BEAM0101/rx_processing/rg_eg_sigma_a1', 'BEAM0101/rx_processing/rg_eg_sigma_a2', 'BEAM0101/rx_processing/rg_eg_sigma_a3', 'BEAM0101/rx_processing/rg_eg_sigma_a4', 'BEAM0101/rx_processing/rg_eg_sigma_a5', 'BEAM0101/rx_processing/rg_eg_sigma_a6', 'BEAM0101/rx_processing/rg_eg_sigma_error_a1', 'BEAM0101/rx_processing/rg_eg_sigma_error_a2', 'BEAM0101/rx_processing/rg_eg_sigma_error_a3', 'BEAM0101/rx_processing/rg_eg_sigma_error_a4', 'BEAM0101/rx_processing/rg_eg_sigma_error_a5', 'BEAM0101/rx_processing/rg_eg_sigma_error_a6', 'BEAM0101/rx_processing/rg_error_a1', 'BEAM0101/rx_processing/rg_error_a2', 'BEAM0101/rx_processing/rg_error_a3', 'BEAM0101/rx_processing/rg_error_a4', 'BEAM0101/rx_processing/rg_error_a5', 'BEAM0101/rx_processing/rg_error_a6', 'BEAM0101/rx_processing/rv_a1', 'BEAM0101/rx_processing/rv_a2', 'BEAM0101/rx_processing/rv_a3', 'BEAM0101/rx_processing/rv_a4', 'BEAM0101/rx_processing/rv_a5', 'BEAM0101/rx_processing/rv_a6', 'BEAM0101/rx_processing/rx_energy_a1', 'BEAM0101/rx_processing/rx_energy_a2', 'BEAM0101/rx_processing/rx_energy_a3', 'BEAM0101/rx_processing/rx_energy_a4', 'BEAM0101/rx_processing/rx_energy_a5', 'BEAM0101/rx_processing/rx_energy_a6', 'BEAM0101/rx_processing/shot_number', 'BEAM0101/rx_range_highestreturn', 'BEAM0101/rx_sample_count', 'BEAM0101/rx_sample_start_index', 'BEAM0101/selected_l2a_algorithm', 'BEAM0101/selected_mode', 'BEAM0101/selected_mode_flag', 'BEAM0101/selected_rg_algorithm', 'BEAM0101/sensitivity', 'BEAM0101/shot_number', 'BEAM0101/stale_return_flag', 'BEAM0101/surface_flag', 'BEAM0110/algorithmrun_flag', 'BEAM0110/ancillary/dz', 'BEAM0110/ancillary/l2a_alg_count', 'BEAM0110/ancillary/maxheight_cuttoff', 'BEAM0110/ancillary/rg_eg_constraint_center_buffer', 'BEAM0110/ancillary/rg_eg_mpfit_max_func_evals', 'BEAM0110/ancillary/rg_eg_mpfit_maxiters', 'BEAM0110/ancillary/rg_eg_mpfit_tolerance', 'BEAM0110/ancillary/signal_search_buff', 'BEAM0110/ancillary/tx_noise_stddev_multiplier', 'BEAM0110/beam', 'BEAM0110/channel', 'BEAM0110/cover', 'BEAM0110/cover_z', 'BEAM0110/fhd_normal', ...]
len(SDS)
1576
| Label | Description | Units |
|---|---|---|
| lat_lowestmode | Latitude of center of lowest mode | degree |
| lon_lowestmode | Longitude of center of lowest mode | degree |
| elev_lowestmode | elevation of center of lowest mode relative to reference ellipsoid | m |
| shot_number | Unique shot ID | counter |
| l2b_quality_flag | Flag simpilfying selection of most useful data for Level 2B** | - |
| degrade_flag | Non-zero values indicate the shot occured during a degraded period. A non-zero tens digit indicates degraded attitude, a non-zero ones digit indicates a degraded trajectory. 3X=ADF CHU solution unavailable (ST-2); 4X=Platform attitude; 5X=Poor solution (filter covariance large); 6X=Data outage (platform attitude gap also); 7X=ST 1+2 unavailable (similar boresight FOV); 8X=ST 1+2+3 unavailable; 9X=ST 1+2+3 and ISS unavailable; X1=Maneuver; X2=GPS data gap; X3=ST blinding; X4=Other; X5=GPS receiver clock drift; X6=X5+X1; X7=X5+X2; X8=X5+X3; X9=X5+X4 | - |
| pai | Total plant area index | m2/m2 |
| rh100 | Height above ground of the received waveform signal start (rh[101] from L2A) | cm |
| digital_elevation_model | Digital elevation model height above the WGS84 ellipsoid. Interpolated at latitude_bin0 and longitude_bin0 from the TandemX 90m product | m |
| modis_nonvegetated | Percent non-vegetated from MODIS data. Interpolated at latitude_bin0 and longitude_bin0 | percent |
** quality_flag is a summation of several individual quality assessment parameters and other flags and is intended to provide general guidance only. A quality_flag value of 1 indicates the cover and vertical profile metrics represent the land surface and meet criteria based on waveform shot energy, sensitivity, amplitude, and real-time surface tracking quality, and the quality of extended Gaussian fitting to the lowest mode.
columns= ['Beam', 'Shot Number', 'Longitude', 'Latitude', 'Quality Flag', 'Tandem-X DEM',
'Canopy Elevation (m)','Elevation (m)', 'Plant Area Index', 'Canopy Height/rh100 (cm)',
'non-vegetated from MODIS (percent)', 'Degrade Flag']
latslons_all = pandas.DataFrame(columns=columns)
beamNames = ['BEAM0000', 'BEAM0001', 'BEAM0010', 'BEAM0011', 'BEAM0101', 'BEAM0110', 'BEAM1000', 'BEAM1011' ]
for beamname in beamNames:
# Open the SDS
lats = L2B[f'{beamname}/geolocation/lat_lowestmode'][()]
lons = L2B[f'{beamname}/geolocation/lon_lowestmode'][()]
elevs = L2B[f'{beamname}/geolocation/elev_lowestmode'][()]
shots = L2B[f'{beamname}/geolocation/shot_number'][()].astype(str)
quality = L2B[f'{beamname}/l2b_quality_flag'][()]
pai = L2B[f'{beamname}/pai'][()]
rh100 = L2B[f'{beamname}/rh100'][()]
degrade_flag = L2B[f'{beamname}/geolocation/degrade_flag'][()]
dem = L2B[f'{beamname}/geolocation/digital_elevation_model'][()]
canopy = L2B[f'{beamname}/geolocation/elev_highestreturn'][()]
modis_veg = L2B[f'{beamname}/land_cover_data/modis_nonvegetated'][()]
latslons = pandas.DataFrame({'Beam':beamname, 'Shot Number':shots, 'Longitude':lons, 'Latitude':lats, 'Quality Flag':quality,
'Tandem-X DEM':dem, 'Canopy Elevation (m)':canopy, 'Elevation (m)':elevs, 'Plant Area Index':pai,
'Canopy Height/rh100 (cm)':rh100, 'non-vegetated from MODIS (percent)':modis_veg, 'Degrade Flag':degrade_flag})
latslons_all = pandas.concat([latslons_all, latslons],join="inner")
latslons_all
| Beam | Shot Number | Longitude | Latitude | Quality Flag | Tandem-X DEM | Canopy Elevation (m) | Elevation (m) | Plant Area Index | Canopy Height/rh100 (cm) | non-vegetated from MODIS (percent) | Degrade Flag | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | BEAM0000 | 191450000200044950 | -134.826959 | 20.454284 | 0 | -999999.000000 | 8690.881836 | 8690.881836 | -9999.000000 | 0 | -9999.0 | 0 |
| 1 | BEAM0000 | 191450000200044951 | -134.826788 | 20.454486 | 0 | -999999.000000 | 8690.892578 | 8690.892578 | -9999.000000 | 0 | -9999.0 | 0 |
| 2 | BEAM0000 | 191450000200044952 | -134.826616 | 20.454687 | 0 | -999999.000000 | 8690.902344 | 8690.902344 | -9999.000000 | 0 | -9999.0 | 0 |
| 3 | BEAM0000 | 191450000200044953 | -134.826445 | 20.454889 | 0 | -999999.000000 | 8690.913086 | 8690.913086 | -9999.000000 | 0 | -9999.0 | 0 |
| 4 | BEAM0000 | 191450000200044954 | -134.826274 | 20.455091 | 0 | -999999.000000 | 8691.520508 | 8691.520508 | -9999.000000 | 0 | -9999.0 | 0 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 116686 | BEAM1011 | 191451100200157799 | -66.732469 | 51.778879 | 0 | 575.726562 | 2517.487549 | 2480.030518 | -9999.000000 | 3745 | 11.0 | 0 |
| 116687 | BEAM1011 | 191451100200157800 | -66.731667 | 51.778883 | 0 | 577.237915 | 2457.362305 | 2456.914062 | -9999.000000 | 43 | 11.0 | 0 |
| 116688 | BEAM1011 | 191451100200157801 | -66.730790 | 51.778890 | 0 | 577.237915 | 2527.554688 | 2499.284668 | -9999.000000 | 2827 | 11.0 | 0 |
| 116689 | BEAM1011 | 191451100200157802 | -66.729918 | 51.778898 | 0 | 580.382568 | 2560.982666 | 2536.708496 | 4.039585 | 2427 | 11.0 | 0 |
| 116690 | BEAM1011 | 191451100200157803 | -66.729060 | 51.778904 | 0 | 581.518860 | 2568.459717 | 2561.886963 | -9999.000000 | 657 | 25.0 | 0 |
948552 rows × 12 columns
Below, is the plot of entire sub-orbit included in this granule. Plotting this could take a long time, and might include information that we do not need necessarily. So lets make a subset of data to only keep the data we need.
latslons_all = latslons_all [latslons_all ['Degrade Flag'] == 0].drop(columns = 'Degrade Flag')
latslons_all = latslons_all [latslons_all['Quality Flag'] == 1].drop(columns = 'Quality Flag')
# reset the index and drop the NAs
latslons_all = latslons_all[latslons_all['Tandem-X DEM'] != -999999.0]
latslons_all = latslons_all[latslons_all['non-vegetated from MODIS (percent)'] != -9999.0]
latslons_all = latslons_all.dropna()
latslons_all = latslons_all.reset_index(drop=True)
latslons_all
| Beam | Shot Number | Longitude | Latitude | Tandem-X DEM | Canopy Elevation (m) | Elevation (m) | Plant Area Index | Canopy Height/rh100 (cm) | non-vegetated from MODIS (percent) | |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | BEAM0000 | 191450000200081940 | -120.463823 | 34.488103 | 199.594803 | 196.925323 | 183.583496 | 1.352260 | 1334 | 15.0 |
| 1 | BEAM0000 | 191450000200081941 | -120.463359 | 34.488465 | 199.621231 | 210.334656 | 203.645050 | 0.295318 | 667 | 15.0 |
| 2 | BEAM0000 | 191450000200081949 | -120.459737 | 34.491300 | 213.059143 | 228.421555 | 209.324432 | 1.824727 | 1909 | 9.0 |
| 3 | BEAM0000 | 191450000200081950 | -120.459272 | 34.491663 | 235.767044 | 244.728012 | 230.078156 | 1.431416 | 1464 | 9.0 |
| 4 | BEAM0000 | 191450000200081951 | -120.458817 | 34.492019 | 235.767044 | 243.235764 | 234.864410 | 0.475982 | 836 | 6.0 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 274530 | BEAM1011 | 191451100200155427 | -68.703371 | 51.748007 | 509.907318 | 513.940735 | 506.507111 | 1.281197 | 742 | 32.0 |
| 274531 | BEAM1011 | 191451100200155428 | -68.702538 | 51.748026 | 515.884949 | 522.243958 | 512.270203 | 0.228271 | 997 | 37.0 |
| 274532 | BEAM1011 | 191451100200155429 | -68.701715 | 51.748045 | 514.225098 | 523.028931 | 510.178894 | 0.794760 | 1285 | 37.0 |
| 274533 | BEAM1011 | 191451100200155430 | -68.700894 | 51.748064 | 514.225098 | 519.418213 | 506.007843 | 0.680019 | 1340 | 37.0 |
| 274534 | BEAM1011 | 191451100200155431 | -68.700070 | 51.748083 | 509.531982 | 516.337219 | 504.495789 | 0.486418 | 1184 | 37.0 |
274535 rows × 10 columns
shapely point generated from each lat/lon location from the shot is created. Next, the dataframe is converted to a Geopandas GeoDataFrame.¶# Take the lat/lon dataframe and convert each lat/lon to a shapely point and convert to a Geodataframe
latslons_all = geopandas.GeoDataFrame(latslons_all, geometry=latslons_all.apply(lambda row: Point(row.Longitude, row.Latitude), axis=1))
latslons_all = latslons_all.set_crs('EPSG:4326')
ROI = geopandas.GeoDataFrame.from_file('NationalForest.geojson')
ROI.crs = 'EPSG:4326'
shot_list = []
for num, geom in enumerate(latslons_all['geometry']):
if ROI.contains(geom)[0]:
shot_n = latslons_all.loc[num, 'Shot Number']
shot_list.append(shot_n)
DF = latslons_all.where(latslons_all['Shot Number'].isin(shot_list))
DF = DF.reset_index(drop=True).dropna()
DF
| Beam | Shot Number | Longitude | Latitude | Tandem-X DEM | Canopy Elevation (m) | Elevation (m) | Plant Area Index | Canopy Height/rh100 (cm) | non-vegetated from MODIS (percent) | geometry | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 8944 | BEAM0000 | 191450000200100445 | -111.263042 | 40.692563 | 2007.632080 | 2015.287842 | 2009.384521 | 0.276865 | 590 | 20.0 | POINT (-111.26304 40.69256) |
| 8945 | BEAM0000 | 191450000200100446 | -111.262499 | 40.692874 | 2012.697021 | 2019.093872 | 2013.003784 | 0.120738 | 609 | 20.0 | POINT (-111.26250 40.69287) |
| 8946 | BEAM0000 | 191450000200100447 | -111.261956 | 40.693185 | 2018.024170 | 2022.015381 | 2016.934082 | 0.090340 | 507 | 19.0 | POINT (-111.26196 40.69319) |
| 8947 | BEAM0000 | 191450000200100449 | -111.260871 | 40.693807 | 2022.398193 | 2029.190552 | 2022.913696 | 0.316465 | 626 | 19.0 | POINT (-111.26087 40.69381) |
| 8948 | BEAM0000 | 191450000200100450 | -111.260329 | 40.694117 | 2028.278809 | 2031.693481 | 2026.051758 | 0.269103 | 563 | 19.0 | POINT (-111.26033 40.69412) |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 251324 | BEAM1011 | 191451100200096272 | -110.799421 | 40.906476 | 2648.858887 | 2661.588135 | 2641.007568 | 0.558181 | 2057 | 13.0 | POINT (-110.79942 40.90648) |
| 251325 | BEAM1011 | 191451100200096273 | -110.798881 | 40.906781 | 2648.858887 | 2656.045166 | 2635.277832 | 0.276846 | 2076 | 12.0 | POINT (-110.79888 40.90678) |
| 251326 | BEAM1011 | 191451100200096274 | -110.798337 | 40.907088 | 2636.217285 | 2651.862549 | 2633.971191 | 0.162534 | 1788 | 12.0 | POINT (-110.79834 40.90709) |
| 251327 | BEAM1011 | 191451100200096275 | -110.797793 | 40.907395 | 2636.313477 | 2652.544678 | 2633.196777 | 0.630030 | 1934 | 12.0 | POINT (-110.79779 40.90740) |
| 251328 | BEAM1011 | 191451100200096276 | -110.797250 | 40.907702 | 2636.313477 | 2643.638672 | 2631.611572 | 0.157591 | 1202 | 7.0 | POINT (-110.79725 40.90770) |
5890 rows × 11 columns
All_DF = geopandas.GeoDataFrame(DF).drop(columns=['Longitude', 'Latitude'])
geoviews python package are used to spatially visualize the location of the GEDI shots on a basemap layer and import a GeoJSON file of the spatial region of interest for this use case example.¶# Create a list of geodataframe columns to be included as attributes in the output map
vdims = []
for f in All_DF:
if f not in ['geometry']:
vdims.append(f)
vdims
# Define a function for visualizing GEDI points
def pointVisual(features, vdims):
return (gvts.EsriImagery * geoviews.Points(features, vdims=vdims).options(tools=['hover'], height=500, width=900, size=4,
color='yellow', fontsize={'xticks': 10, 'yticks': 10,
'xlabel':16, 'ylabel': 16}))
# Visualize GEDI data
geoviews.Polygons(ROI['geometry']).opts(line_color='red', color=None)* pointVisual(All_DF, vdims = vdims)
import panel
panel.extension()
mask_name = panel.widgets.Select(name='Datasets',options=vdims, value='Elevation (m)', disabled_options=['Beam', 'Shot Number'])
@panel.depends(mask_name)
def visual_map(mask_name):
map = (gvts.EsriImagery * geoviews.Points(All_DF,
vdims=vdims).options(color=mask_name,
cmap='gnuplot', size=4, tools=['hover'],
clim=(int(min(DF[mask_name])),
round(max(DF[mask_name]))),
colorbar=True,
title=f'{mask_name} (Wasatch-Cache National Forest): Apr 30, 2022',
fontsize={'xticks': 10, 'yticks': 10, 'xlabel':16, 'clabel':12,
'cticks':10,'title':10,
'ylabel':16})).options(height=500,width=700)
return map
panel.Row(panel.WidgetBox(mask_name), visual_map)
outName = L2B.filename.replace('.h5', '.geojson') # Create an output file name using the input file name
print(outName)
All_DF.to_file(outName, driver='GeoJSON') # Export to GeoJSON
GEDI02_B_2022120091720_O19145_02_T09106_02_003_01_V002.geojson